CC = gcc

a.out: main.o symbol.o table.o lex.yy.o y.tab.o simulator.o alu.o typewriter.o lineprinter.o cardreader.o cardpunch.o
	$(CC) -g -o $@ $^ -lpthread

.c.o:
	$(CC) -g -c $<

clean: 
	rm a.out *.o lex.yy.c y.tab.c y.tab.h

main.o: main.c simulator.h

symbol.o: symbol.c symbol.h

table.o: table.c table.h

typewriter.o: typewriter.c simulator.h macro.h

lineprinter.o: lineprinter.c simulator.h macro.h

cardreader.o: cardreader.c simulator.h macro.h

cardpunch.o: cardpunch.c simulator.h macro.h

simulator.o: simulator.c simulator.h alu.h macro.h typewriter.h lineprinter.h cardreader.h cardpunch.h

alu.o: alu.c alu.h

lex.yy.c: mix.lex y.tab.h symbol.h mixalSymbol.h
	lex mix.lex

y.tab.c: mix.y symbol.h mixalSymbol.h simulator.h alu.h
	yacc -dv mix.y

y.tab.h: y.tab.c
	echo "y.tab.h was created at the same time as y.tab.c"

